package com.ccut.xunfeiSpringboot.service.impl;

import cn.hutool.core.util.StrUtil;
import com.ccut.xunfeiSpringboot.entity.Admin;
import com.ccut.xunfeiSpringboot.mapper.AdminMapper;
import com.ccut.xunfeiSpringboot.service.AdminService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import com.ccut.xunfeiSpringboot.exception.CustomException;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
public class AdminServiceImpl implements AdminService {

    @Resource
    private AdminMapper adminMapper;

    /**
     * 添加管理员
     */
    @Transactional
    public void add(Admin admin) {
        String username = admin.getUsername();
        // 检查用户名是否已存在
        Admin dbAdmin = adminMapper.selectByUsername(username);
        if (dbAdmin != null) {
            throw new CustomException("500", "账号已存在，请更换别的账号");
        }
//        // 设置默认密码
//        if (StrUtil.isBlank(admin.getPassword())) {
//            admin.setPassword("123");
//        }
//        // 设置默认公司名
//        if (StrUtil.isBlank(admin.getCompanyName())) {
//            admin.setCompanyName(admin.getUsername() + "公司");
//        }
        // 插入数据库
        adminMapper.insert(admin);
    }

    @Override
    public void deleteById(String username) {

    }

    /**
     * 根据 ID 删除企业管理员
     */
    public void deleteById(Integer id) {
        adminMapper.deleteById(id);
    }

    /**
     * 更新企业管理员信息
     */
    public void update(Admin admin) {
        adminMapper.updateById(admin);
    }

    /**
     * 查询所有企业管理员
     */
    public List<Admin> selectAll() {
        return adminMapper.selectAll();
    }


    public Admin selectById(Integer id) {
        return adminMapper.selectById(id);
    }

    /**
     * 根据 ID 查询企业管理员
     */

    /**
     * 分页查询企业管理员
     */
    public PageInfo<Admin> selectPage(Integer pageNum, Integer pageSize) {
        PageHelper.startPage(pageNum, pageSize);
        List<Admin> list = adminMapper.selectAll();
        return PageInfo.of(list);
    }

    /**
     * 注册方法（复用 add 方法）
     */
    @Transactional
    public void register(Admin admin) {
        this.add(admin);
    }

    /**
     * 登录验证
     */
    @Override
    public Admin login(String username, String password) {
        // 根据用户名查询管理员
        Admin admin = adminMapper.selectByUsername(username);
        if (admin == null) {
            throw new CustomException("401", "用户名不存在");
        }
        // 验证密码
        if (!password.equals(admin.getPassword())) {
            throw new CustomException("401", "密码错误");
        }
        return admin;
    }

    @Override
    public boolean existsByUsername(String username) {
        return false;
    }
}